//
//  WBStatusCell.swift
//  仿写微博
//
//  Created by Apple on 17/7/24.
//  Copyright © 2017年 tuimao. All rights reserved.
//

import UIKit

/// 微博cell的协议
/** 如果需要设置可选协议
* 需要遵守NSObjectProtocol
* 协议需要 @objc
* 方法需要 @objc optional
 **/
@objc protocol WBStatusCellDelegate: NSObjectProtocol {
    /// 微博cell选中URL字符串
    @objc optional func statusCellDidTapURLString(cell:WBStatusCell, urlString:String)
}


class WBStatusCell: UITableViewCell {
    //代理属性
    weak var delegate: WBStatusCellDelegate?
    
    //微博模型
    var viewModel: WBStatusViewModel?{
        didSet{
            //名字
            nameLabel.text = viewModel?.status.user?.screen_name
            //正文
            statusLabel.attributedText = viewModel?.statusAttrText
            //会员
            memberIconView.image = viewModel?.memberIcon
            //vip
            vipIconView.image = viewModel?.vipIcon
            //icon
            iconView.cz_setImage(urlString: viewModel?.status.user?.profile_image_url, placeholderImage: UIImage(named: "avatar_default_big"),isAvatar: true)
            //toolbar
            toolBar.viewModel = viewModel
            //给pictureView传递模型层
            pictureView.viewModel = viewModel
            /// 被转发微博的文字
            retweetedLabel?.attributedText = viewModel?.retweetedAttrText
            //来源
            sourceLabel.text = viewModel?.sourceStr
        }
    }
    //头像
    @IBOutlet weak var iconView: UIImageView!
    //姓名
    @IBOutlet weak var nameLabel: UILabel!
    //会员图标
    @IBOutlet weak var memberIconView: UIImageView!
    //时间
    @IBOutlet weak var timeLabel: UILabel!
    //来源
    @IBOutlet weak var sourceLabel: UILabel!
    //认证
    @IBOutlet weak var vipIconView: UIImageView!
    //正文
    @IBOutlet weak var statusLabel: FFLabel!
    //底部视图
    @IBOutlet weak var toolBar: WBStatusToolBar!
    //配图视图
    @IBOutlet weak var pictureView: WBStatusPictureView!
    /// 被转发微博的文字,这里必须用“?”
    @IBOutlet weak var retweetedLabel: FFLabel?
    override func awakeFromNib() {
        super.awakeFromNib()
        //离屏渲染
        self.layer.drawsAsynchronously = true
        //栅格化- 异步绘制之后，会生成一张独立的图像，cell在屏幕上滚动的时候，本质是滚动这个图像
        //cell优化，要尽量的减少图层，相当于只有一层
        //停止滚动可以接受监听
        self.layer.shouldRasterize = true
        //栅格化必须指定分辨率
        self.layer.rasterizationScale = UIScreen.main.scale
        //设置微博文本代理
        statusLabel.delegate = self
        retweetedLabel?.delegate = self
    }
}

extension WBStatusCell: FFLabelDelegate{
    //实现FFLabelDelegate
    func labelDidSelectedLinkText(label: FFLabel, text: String) {
        if !text.hasPrefix("http://"){
            return
        }
        //因为方法是可选的，这里面需要解包，我们一般选 ？  因为这样如果没有实现协议就什么都不做，
        //如果先 ！ 那么没有实现协议就会崩溃
        delegate?.statusCellDidTapURLString?(cell: self, urlString: text)
    }
    
}





